package cn.levi.excel.annotation;

import cn.levi.excel.validate.ValidateExcelImport;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 用于标注导入校验规则，该注解依赖spring环境容器
 * 使用时要同{@link Excell}注解同时使用才会生效，
 * @author lei
 * @since 2024/10/16
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ExcellValidate {

	/**
	 * 是否开启校验,开启校验后该注解的校验才生效
	 */
	boolean enable() default true;
	/**
	 * 字符最大长度，此处设计为大数值，主要是方便不做限制的字段。<br>
	 * 由于注解上参数{@link #validator()}无法传递参数，
	 * 对于较为灵活的校验如字符长度限制无法采用，所以额外加字段。<br>
	 * <strong color='green'>该参数需在{@link #validator()}中加入{@link  com.hr.platform.common.excel.validate.ValidateLength}校验器</strong>
	 */
	 int length()  default Integer.MAX_VALUE;
	/**
	 * 校验规则,校验顺序按照配置的先后顺序，需实现接口{@link ValidateExcelImport}
	 * 并且要加入spring容器中。校验时，会从spring容器中获取（主要是为了兼容一些业务校验需要，比如校验用户存在，方便userService自动注入）
	 */
	Class<? extends ValidateExcelImport>[] validator() default {};
 }
